// weather_display.cpp
#include "display.hpp"
#include "my_tft.hpp"         // 显示相关函数
#include "weather_api.hpp"        // 使用 now 对象
#include "bme280_sensor.hpp" // 使用 BME280Data 结构体
void showWeather() {
  tft.fillRect(0, 0, 160, 64, ST77XX_BLACK);  // 只清除天气部分
  char buf[64];
  sprintf(buf, "气温: %.1f°C", now.temp);
  tft_display_utf8(buf, 0, 18, ST77XX_YELLOW);
  

  sprintf(buf, "天气: %s",now.sky.c_str());
  //tft_display_utf8("天气: ", 80, 18, ST77XX_GREEN);
  tft_display_utf8(buf, 80, 18, ST77XX_GREEN);

  // sprintf(buf, "体感: %.1f°C %s", now.apparent, now.comfort.c_str());
  // tft_display_utf8(buf, 0, 36, ST77XX_ORANGE);

  sprintf(buf, "湿度: %.0f", now.humidity * 100);
  tft_display_utf8(buf, 0,36, ST77XX_CYAN);

  sprintf(buf, "空气质量: %d", now.aqi);
  tft_display_utf8(buf, 80, 36, ST77XX_RED);
}
void showBME280Data() {
  if (readBME280()) {
    char buf[32];
    sprintf(buf, "BME温度: %.1f°C", data.temperature);
    tft_display_utf8(buf, 0, 108, ST77XX_WHITE);
    // sprintf(buf, "BME湿度: %.1f%%", data.humidity);
    // tft_display_utf8(buf, 0, 138, ST77XX_CYAN);
    // sprintf(buf, "气压: %.1f hPa", data.pressure);
    // tft_display_utf8(buf, 0, 156, ST77XX_BLUE);
  } else {
    tft_display_utf8("BME280 读取失败", 0, 120, ST77XX_RED);
  }
}

void showData(const String& classLabel, const String& temp, const String& picture) {
  static String last_class = "";
  static String last_temp = "";
  static String last_pic = "";

  char buf[64];
  // 如果 class 有变化，单独更新 class 区域
  if (classLabel != last_class) {
    last_class = classLabel;
    tft.fillRect(0, 81, 160, 18, ST77XX_BLACK);  // 清除 class 区域
    sprintf(buf, "Voice: %s", classLabel.c_str());
    tft_display_utf8(buf, 0, 90, ST77XX_CYAN);
  }

  // 如果 temp 有变化，单独更新 temp 区域
  if (temp.substring(0, temp.length() - 1) != last_temp.substring(0, last_temp.length() - 1) ) {
    last_temp = temp;
    tft.fillRect(0, 63, 160, 18, ST77XX_BLACK);  // 清除 temp 区域
    sprintf(buf, "Temp: %.1f", temp.toFloat());
    tft_display_utf8(buf, 0, 72, ST77XX_YELLOW);
  }

  // 如果 picture 有变化，单独更新 picture 区域
  if (picture != last_pic) {
    last_pic = picture;
    tft.fillRect(0, 99, 160, 18, ST77XX_BLACK);  // 清除 picture 区域
    sprintf(buf, "Pic : %s", picture.c_str());
    tft_display_utf8(buf, 0, 108, ST77XX_WHITE);
  }
}
